<script setup lang="ts">
import { onLaunch, onShow, onHide, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app'
import { userStore } from '@/stores/userStore'
import { userApi } from '@/api/api-helper.js'

// 根据openId获取用户信息并更新缓存
async function fetchUserInfoByOpenId() {
	try {
		const openId = userStore.getOpenId()
		if (!openId) {
			console.log('openId为空，跳过获取用户信息')
			return
		}
		
		console.log('开始根据openId获取用户信息:', openId)
		const result = await userApi.getUserInfo(openId)
		
		if (result && result.code === 200 && result.data) {
			console.log('获取用户信息成功:', result.data)
			
			// 将接口返回的用户信息更新到缓存
			const userInfo = {
				userId: result.data.id || '',
				avatar: result.data.avatar || '',
				name: result.data.name || '',
				favoriteCount: 0, // 接口中没有这个字段，保持默认值
				employmentStatus: '未入职', // 接口中没有这个字段，保持默认值
				isVerified: !!(result.data.name && result.data.idCardNo), // 根据姓名和身份证号判断是否实名
				phone: result.data.phone || '',
				realName: result.data.name || '',
				idNumber: result.data.idCardNo || '',
				token: '',
				openId: result.data.openId || openId,
				isHirePerson: result.data.isHirePerson || false,
				lastLoginTime: Date.now()
			}
			
			// 更新用户信息到缓存
			const success = userStore.updateUserInfo(userInfo)
			if (success) {
				console.log('用户信息更新到缓存成功')
			} else {
				console.error('用户信息更新到缓存失败')
			}
		} else {
			console.log('获取用户信息失败或用户不存在:', result)
		}
	} catch (error) {
		console.error('获取用户信息异常:', error)
	}
}

// 自动登录获取openId
async function autoLogin() {
	try {
		// 检查是否已经有openId
		const existingOpenId = userStore.getOpenId()
		if (existingOpenId) {
			console.log('已有openId:', existingOpenId)
			return
		}
		
		console.log('开始自动登录获取openId')
		
		// 调用微信登录
		const loginResult = await uni.login()
		console.log('微信登录结果:', loginResult)
		
		if (loginResult.code) {
			console.log('微信登录成功，获取到code:', loginResult.code)
			
			// 将code发送到后端换取openId
			console.log('开始调用后端getOpenId接口...')
			const result = await userApi.getOpenId(loginResult.code)
			console.log('后端getOpenId接口返回:', result)
			
			if (result && result.code === 200) {
				const openId = result.data
				console.log('获取到openId:', openId)
				
				if (openId) {
					// 将openId存储到用户缓存
					const success = userStore.setOpenId(openId)
					if (success) {
						console.log('openId存储成功')
						// 验证存储是否成功
						const storedOpenId = userStore.getOpenId()
						console.log('验证存储的openId:', storedOpenId)
					} else {
						console.error('openId存储失败')
					}
				} else {
					console.error('openId为空，接口返回数据:', result)
				}
			} else {
				console.error('获取openId失败:', result?.msg || result?.message || '接口返回错误')
				console.error('完整错误信息:', result)
			}
		} else {
			console.error('微信登录失败，loginResult:', loginResult)
		}
	} catch (error) {
		console.error('自动登录失败:', error)
		console.error('错误详情:', error.message)
	}
}

onLaunch(async () => {
	console.log('App Launch')
	uni.showShareMenu({
	        withShareTicket: true,
	        menus: ['shareAppMessage', 'shareTimeline'],
	    });
	try {
		await autoLogin()
		// 初始化默认用户信息（包含调试用的openId）
		userStore.initDefaultUserInfo()
		
		// 初始化用户信息缓存
		userStore.initFromCache()
		
		// 根据openId获取用户信息并更新缓存、
		setTimeout(()=>{
			fetchUserInfoByOpenId()
		}, 1200)
	} catch (error) {
		console.error('App启动失败:', error)
		// 显示错误提示
		uni.showToast({
			title: '应用启动失败，请重试',
			icon: 'none',
			duration: 3000
		})
	}
})

onShow(() => {
	console.log('App Show')
})

onHide(() => {
	console.log('App Hide')
})

// 全局分享给朋友
onShareAppMessage(() => {
	return {
		title: '领冠人力 - 找工作就上领冠',
		path: '/pages/jobs/jobs',
		imageUrl: '/static/logo.png'
	}
})

// 全局分享到朋友圈
onShareTimeline(() => {
	return {
		title: '领冠人力 - 专业的人力资源服务平台',
		imageUrl: '/static/logo.png'
	}
})
</script>

<style lang="scss">
	/*每个页面公共css */
	@import "uview-plus/index.scss";
</style>
